package com.binc.testspring.encode;

import java.io.*;

/**
 * FileName: IoEncoding
 * Autho: binC
 * Date:  2022/3/10 14:42
 * 在我们的应用程序中涉及 I/O 操作时，只要注意指定统一的编解码 Charset 字符集，一般不会出现乱码问题。
 */
public class IoEncoding {
    public static void main(String[] args) throws IOException {
        String file = "d:/stream.txt"; //注意手动创建一下这个文件  否则报错
        String charset = "UTF-8";
        charset = "GB2312"; //在我们的应用程序中涉及 I/O 操作时，只要注意指定统一的编解码 Charset 字符集，一般不会出现乱码问题。
        // 写字符换转成字节流
        FileOutputStream outputStream = new FileOutputStream(file);
        OutputStreamWriter writer = new OutputStreamWriter(
                outputStream, charset);//在我们的应用程序中涉及 I/O 操作时，只要注意指定统一的编解码 Charset 字符集，一般不会出现乱码问题。
        try {
            writer.write("这是要保存的中文字符");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            writer.close();
        }
        // 读取字节转换成字符
        FileInputStream inputStream = new FileInputStream(file);
        InputStreamReader reader = new InputStreamReader(
                inputStream, charset); //在我们的应用程序中涉及 I/O 操作时，只要注意指定统一的编解码 Charset 字符集，一般不会出现乱码问题。
        StringBuffer buffer = new StringBuffer("");
        char[] buf = new char[128];
        int count = 0;
        try {
            while ((count = reader.read(buf)) != -1) {
                buffer.append(buf, 0, count);
            }
            System.out.println(buffer.toString());
        } finally {
            reader.close();
        }
    }

}
